
package cg.server;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Tim Beer
 */
public class ServerMain extends Thread{

    
    static ArrayList<Player> _players;
    private int port;
    
    public ServerMain(int port){
        this.port = port;
        
    }
    
    @Override
    public void run(){
        
            _players = new ArrayList<Player>();
         try {
           //ServerSocket hört auf Port 7777 und akzeptiert alle Anfragen der Clients für immer (while(true))
           //Wenn der Server den Client akzeptiert hat, wird ein neuer Spieler erstellt und diesem den Socket als Parameter übergeben
           //Der erstellte Spieler wird in die ArrayList _players übergeben
           //Sobald _players 4 Spieler hat, wird eine Gamesession gestartet mit diesen 4 Spielern
           //_players wird geleert, somit wartet der Server auf weitere 4 Spieler und startet dann wieder eine GameSession
           ServerSocket server = new ServerSocket(port);
             System.out.println("Server listening on Port" + port);
           while(true)
           {
               Socket s = server.accept();
               Player p = new Player(s);
               p.Init();
               System.out.println("Verbindung zu Client hergestellt");
               _players.add(p);
               System.out.println("Anzahl Player in in Liste: " + _players.size());
               if (_players.size() == 4)
               {
                   new GameSession(_players.get(0), _players.get(1), _players.get(2), _players.get(3)).Init();
                   _players.clear();                        
               }
           }
        } catch (IOException ex) {
            System.out.println(ex.toString());;
        }
        
    }
 
}
